package com.erp.util;

import java.util.ArrayList;
import java.util.List;

import org.dom4j.Document;
import org.dom4j.DocumentException;
import org.dom4j.Element;
import org.dom4j.io.SAXReader;

import com.erp.domain.TPrivilege;

public class Dom4JParser {

	private List<TPrivilege> privilegeObjs = new ArrayList<TPrivilege>();

	public List<TPrivilege> getPrivilegeObjs() {

		// 创建saxReader对象
		SAXReader reader = new SAXReader();
		// 通过read方法读取一个文件 转换成Document对象
		Document document = null;
		try {
			document = reader.read(this.getClass().getClassLoader()
					.getResource("privilege.xml").getFile());
		} catch (DocumentException e) {
			e.printStackTrace();
		}
		// 获取根节点元素对象
		Element node = document.getRootElement();
		// 遍历所有的元素节点
		listPrivilege(null, node, 1);
		return privilegeObjs;
	}

	@SuppressWarnings("unchecked")
	public void listPrivilege(TPrivilege parent, Element node, int level) {

		List<Element> privilegeNodes = node.elements("privilege");
		for (Element privilegeNode : privilegeNodes) {

			Element nameNode = privilegeNode.element("name");
			Element urlNode = privilegeNode.element("url");
			Element orderNumberNode = privilegeNode.element("orderNumber");
			Element levelNode = privilegeNode.element("level");
			Element childrenNode = privilegeNode.element("children");

			TPrivilege privilegeObj = new TPrivilege(nameNode.getTextTrim(),
					urlNode == null ? null : urlNode.getTextTrim(),
					Integer.parseInt(orderNumberNode.getTextTrim()),
					Integer.parseInt(levelNode.getTextTrim()), parent);
			privilegeObjs.add(privilegeObj);

			if (childrenNode != null) {
				listPrivilege(privilegeObj, childrenNode, level + 1);
			}

		}

	}
}

// TPrivilege menu1;
// TPrivilege menu0;
// TPrivilege menu11, menu111, menu112, menu113, menu114, menu115;
// TPrivilege menu12, menu121, menu122, menu123, menu124;
// TPrivilege menu13, menu131, menu132, menu133, menu134, menu135;
// TPrivilege menu2;
// TPrivilege menu21, menu211, menu212, menu213, menu214;
// TPrivilege menu22, menu23;
// TPrivilege menu3;
// TPrivilege menu31, menu32, menu33;
// TPrivilege menu4;
// TPrivilege menu41, menu42;
// TPrivilege menu5;
// TPrivilege menu51, menu52, menu53, menu54;
// TPrivilege menu6;
// TPrivilege menu61, menu62, menu63;
// TPrivilege menu7;
// TPrivilege menu71, menu72, menu73;
// TPrivilege menu8;
//
// menu0 = new TPrivilege("查看调试信息", "debug", 0, null);
//
// menu1 = new TPrivilege("系统管理", null, 1, null);
//
// menu11 = new TPrivilege("岗位管理", "role_list", 2, menu1);
// menu111 = new TPrivilege("岗位列表", "role_list", 3, menu11);
// menu112 = new TPrivilege("岗位添加", "role_add", 3, menu11);
// menu113 = new TPrivilege("岗位删除", "role_delete", 3, menu11);
// menu114 = new TPrivilege("岗位修改", "role_edit", 3, menu11);
// menu115 = new TPrivilege("设置权限", "role_setPrivilege", 3, menu11);
//
// menu12 = new TPrivilege("部门管理", "department_list", 2, menu1);
// menu121 = new TPrivilege("部门列表", "department_list", 3, menu12);
// menu122 = new TPrivilege("部门添加", "department_add", 3, menu12);
// menu123 = new TPrivilege("部门删除", "department_delete", 3, menu12);
// menu124 = new TPrivilege("部门修改", "department_edit", 3, menu12);
//
// menu13 = new TPrivilege("用户管理", "user_list", 2, menu1);
// menu131 = new TPrivilege("用户列表", "user_list", 3, menu13);
// menu132 = new TPrivilege("用户添加", "user_add", 3, menu13);
// menu133 = new TPrivilege("用户删除", "user_delete", 3, menu13);
// menu134 = new TPrivilege("用户修改", "user_edit", 3, menu13);
// menu135 = new TPrivilege("初始化密码", "user_initPassword", 3, menu13);
//
// menu2 = new TPrivilege("内部论坛", null, 1, null);
//
// menu21 = new TPrivilege("板块管理", "forum_list", 2, menu2);
// menu211 = new TPrivilege("板块添加", "forum_add", 3, menu21);
// menu212 = new TPrivilege("板块删除", "forum_delete", 3, menu21);
// menu213 = new TPrivilege("板块修改", "forum_edit", 3, menu21);
// menu214 = new TPrivilege("板块移动", "forum_move", 3, menu21);
//
// menu22 = new TPrivilege("板块管理2", null, 2, menu2);
// menu23 = new TPrivilege("板块管理3", null, 2, menu2);
//
// menu3 = new TPrivilege("人事管理", null, 1, null);
// menu31 = new TPrivilege("人员管理", null, 2, menu3);
// menu32 = new TPrivilege("合同管理", null, 2, menu3);
// menu33 = new TPrivilege("档案管理", null, 2, menu3);
//
// menu4 = new TPrivilege("人事设置", null, 1, null);
// menu41 = new TPrivilege("合同设置", null, 2, menu4);
// menu42 = new TPrivilege("档案设置", null, 2, menu4);
//
// menu5 = new TPrivilege("考勤排班", null, 2, null);
// menu51 = new TPrivilege("考勤管理", null, 3, menu5);
// menu52 = new TPrivilege("排班管理", null, 3, menu5);
// menu53 = new TPrivilege("考勤报表", null, 3, menu5);
// menu54 = new TPrivilege("考勤设置", null, 3, menu5);
//
// menu6 = new TPrivilege("绩效考核", null, 1, null);
// menu61 = new TPrivilege("考核管理", null, 2, menu6);
// menu62 = new TPrivilege("考核报表", null, 2, menu6);
// menu63 = new TPrivilege("考核设置", null, 2, menu6);
//
// menu7 = new TPrivilege("薪资管理", null, 1, null);
// menu71 = new TPrivilege("考核管理", null, 2, menu7);
// menu72 = new TPrivilege("考核报表", null, 2, menu7);
// menu73 = new TPrivilege("考核设置", null, 2, menu7);
//
// menu8 = new TPrivilege("五险一金", null, 1, null);